<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for fe-train-resource/js/store.js</title>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="../../prettify.css" />
    <link rel="stylesheet" href="../../base.css" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style type='text/css'>
        .coverage-summary .sorter {
            background-image: url(../../sort-arrow-sprite.png);
        }
    </style>
</head>
<body>
<div class='wrapper'>
  <div class='pad1'>
    <h1>
      <a href="../../index.html">All files</a> / <a href="index.html">fe-train-resource/js</a> store.js
    </h1>
    <div class='clearfix'>
      <div class='fl pad1y space-right2'>
        <span class="strong">0% </span>
        <span class="quiet">Statements</span>
        <span class='fraction'>0/112</span>
      </div>
      <div class='fl pad1y space-right2'>
        <span class="strong">0% </span>
        <span class="quiet">Branches</span>
        <span class='fraction'>0/114</span>
      </div>
      <div class='fl pad1y space-right2'>
        <span class="strong">0% </span>
        <span class="quiet">Functions</span>
        <span class='fraction'>0/39</span>
      </div>
      <div class='fl pad1y space-right2'>
        <span class="strong">0% </span>
        <span class="quiet">Lines</span>
        <span class='fraction'>0/1</span>
      </div>
    </div>
    <p class="quiet">
      Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
    </p>
  </div>
  <div class='status-line low'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/* Copyright (c) 2010-2013 Marcus Westin */
<span class="cstat-no" title="statement not covered" >this.JSON||(this.JSON={}),<span class="fstat-no" title="function not covered" >fu</span>nction(){function <span class="fstat-no" title="function not covered" >f(</span>e){<span class="cstat-no" title="statement not covered" >return e&lt;10?"0"+e:e}</span>function <span class="fstat-no" title="function not covered" >quote(</span>e){<span class="cstat-no" title="statement not covered" >return escapable.lastIndex=0,escapable.test(e)?'"'+e.replace(escapable,<span class="fstat-no" title="function not covered" >fu</span>nction(e){var t=<span class="cstat-no" title="statement not covered" >meta[e];<span class="cstat-no" title="statement not covered" ></span>return typeof t=="string"?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)}</span>)+'"':'"'+e+'"'}</span>function <span class="fstat-no" title="function not covered" >str(</span>e,t){var n,r,i,s,o=<span class="cstat-no" title="statement not covered" >gap,</span>u,a=<span class="cstat-no" title="statement not covered" >t[e];<span class="cstat-no" title="statement not covered" ></span>a&amp;&amp;typeof a=="object"&amp;&amp;typeof a.toJSON=="function"&amp;&amp;(a=a.toJSON(e)),typeof rep=="function"&amp;&amp;(a=rep.call(t,e,a));<span class="cstat-no" title="statement not covered" >s</span>witch(typeof a){case"string":<span class="cstat-no" title="statement not covered" >return quote(a);c</span>ase"number":<span class="cstat-no" title="statement not covered" >return isFinite(a)?String(a):"null";c</span>ase"boolean":case"null":<span class="cstat-no" title="statement not covered" >return String(a);c</span>ase"object":<span class="cstat-no" title="statement not covered" >if(!a)<span class="cstat-no" title="statement not covered" >return"null";<span class="cstat-no" title="statement not covered" >g</span></span>ap+=indent,u=[];<span class="cstat-no" title="statement not covered" >i</span>f(Object.prototype.toString.apply(a)==="[object Array]"){<span class="cstat-no" title="statement not covered" >s=a.length;<span class="cstat-no" title="statement not covered" >f</span>or(n=0;n&lt;s;n+=1)<span class="cstat-no" title="statement not covered" >u[n]=str(n,a)||"null";<span class="cstat-no" title="statement not covered" >r</span></span>eturn i=u.length===0?"[]":gap?"[\n"+gap+u.join(",\n"+gap)+"\n"+o+"]":"["+u.join(",")+"]",gap=o,i}<span class="cstat-no" title="statement not covered" ></span>i</span>f(rep&amp;&amp;typeof rep=="object"){<span class="cstat-no" title="statement not covered" >s=rep.length;<span class="cstat-no" title="statement not covered" >f</span>or(n=0;n&lt;s;n+=1)<span class="cstat-no" title="statement not covered" >r=rep[n],typeof r=="string"&amp;&amp;(i=str(r,a),i&amp;&amp;u.push(quote(r)+(gap?": ":":")+i))}</span></span>else <span class="cstat-no" title="statement not covered" >for(r in a)<span class="cstat-no" title="statement not covered" >Object.hasOwnProperty.call(a,r)&amp;&amp;(i=str(r,a),i&amp;&amp;u.push(quote(r)+(gap?": ":":")+i));<span class="cstat-no" title="statement not covered" >r</span></span></span>eturn i=u.length===0?"{}":gap?"{\n"+gap+u.join(",\n"+gap)+"\n"+o+"}":"{"+u.join(",")+"}",gap=o,i}</span>}<span class="cstat-no" title="statement not covered" ></span>typeof Date.prototype.toJSON!="function"&amp;&amp;(Date.prototype.toJSON=<span class="fstat-no" title="function not covered" >fu</span>nction(e){<span class="cstat-no" title="statement not covered" >return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null}</span>,String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=<span class="fstat-no" title="function not covered" >fu</span>nction(e){<span class="cstat-no" title="statement not covered" >return this.valueOf()}</span>);v</span>ar cx=<span class="cstat-no" title="statement not covered" >/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,</span>escapable=<span class="cstat-no" title="statement not covered" >/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,</span>gap,indent,meta=<span class="cstat-no" title="statement not covered" >{"\b":"\\b","	":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},</span>rep;<span class="cstat-no" title="statement not covered" >typeof JSON.stringify!="function"&amp;&amp;(JSON.stringify=<span class="fstat-no" title="function not covered" >fu</span>nction(e,t,n){var r;<span class="cstat-no" title="statement not covered" >gap="",indent="";<span class="cstat-no" title="statement not covered" >i</span>f(typeof n=="number")<span class="cstat-no" title="statement not covered" >for(r=0;r&lt;n;r+=1)<span class="cstat-no" title="statement not covered" >indent+=" ";e</span></span>lse <span class="cstat-no" title="statement not covered" >typeof n=="string"&amp;&amp;(indent=n);<span class="cstat-no" title="statement not covered" >r</span></span>ep=t;<span class="cstat-no" title="statement not covered" >i</span>f(!t||typeof t=="function"||typeof t=="object"&amp;&amp;typeof t.length=="number")<span class="cstat-no" title="statement not covered" >return str("",{"":e});<span class="cstat-no" title="statement not covered" >t</span></span>hrow new Error("JSON.stringify")}</span>),typeof JSON.parse!="function"&amp;&amp;(JSON.parse=<span class="fstat-no" title="function not covered" >fu</span>nction(text,reviver){function <span class="fstat-no" title="function not covered" >walk(</span>e,t){var n,r,i=<span class="cstat-no" title="statement not covered" >e[t];<span class="cstat-no" title="statement not covered" ></span>if(i&amp;&amp;typeof i=="object")<span class="cstat-no" title="statement not covered" >for(n in i)<span class="cstat-no" title="statement not covered" >Object.hasOwnProperty.call(i,n)&amp;&amp;(r=walk(i,n),r!==undefined?i[n]=r:delete i[n]);<span class="cstat-no" title="statement not covered" >r</span></span></span>eturn reviver.call(e,t,i)}</span>var j;<span class="cstat-no" title="statement not covered" >text=String(text),cx.lastIndex=0,cx.test(text)&amp;&amp;(text=text.replace(cx,<span class="fstat-no" title="function not covered" >fu</span>nction(e){<span class="cstat-no" title="statement not covered" >return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)}</span>));<span class="cstat-no" title="statement not covered" >i</span>f(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))<span class="cstat-no" title="statement not covered" >return j=eval("("+text+")"),typeof reviver=="function"?walk({"":j},""):j;<span class="cstat-no" title="statement not covered" >t</span></span>hrow new SyntaxError("JSON.parse")}</span>)}</span>(),<span class="fstat-no" title="function not covered" >fu</span>nction(e){function <span class="fstat-no" title="function not covered" >o(</span>){<span class="cstat-no" title="statement not covered" >try{<span class="cstat-no" title="statement not covered" >return r in e&amp;&amp;e[r]}</span>catch(t){<span class="cstat-no" title="statement not covered" >return!1}</span>}</span>var t=<span class="cstat-no" title="statement not covered" >{},</span>n=<span class="cstat-no" title="statement not covered" >e.document,</span>r=<span class="cstat-no" title="statement not covered" >"localStorage",</span>i=<span class="cstat-no" title="statement not covered" >"script",</span>s;<span class="cstat-no" title="statement not covered" >t.disabled=!1,t.set=<span class="fstat-no" title="function not covered" >fu</span>nction(e,t){},t.get=<span class="fstat-no" title="function not covered" >fu</span>nction(e){},t.remove=<span class="fstat-no" title="function not covered" >fu</span>nction(e){},t.clear=<span class="fstat-no" title="function not covered" >fu</span>nction(){},t.transact=<span class="fstat-no" title="function not covered" >fu</span>nction(e,n,r){var i=<span class="cstat-no" title="statement not covered" >t.get(e);<span class="cstat-no" title="statement not covered" ></span>r==null&amp;&amp;(r=n,n=null),typeof i=="undefined"&amp;&amp;(i=n||{}),r(i),t.set(e,i)}</span>,t.getAll=<span class="fstat-no" title="function not covered" >fu</span>nction(){},t.forEach=<span class="fstat-no" title="function not covered" >fu</span>nction(){},t.serialize=<span class="fstat-no" title="function not covered" >fu</span>nction(e){<span class="cstat-no" title="statement not covered" >return JSON.stringify(e)}</span>,t.deserialize=<span class="fstat-no" title="function not covered" >fu</span>nction(e){<span class="cstat-no" title="statement not covered" >if(typeof e!="string")<span class="cstat-no" title="statement not covered" >return undefined;<span class="cstat-no" title="statement not covered" >t</span></span>ry{<span class="cstat-no" title="statement not covered" >return JSON.parse(e)}</span>catch(t){<span class="cstat-no" title="statement not covered" >return e||undefined}</span>}</span>;<span class="cstat-no" title="statement not covered" >i</span>f(o())<span class="cstat-no" title="statement not covered" >s=e[r],t.set=<span class="fstat-no" title="function not covered" >fu</span>nction(e,n){<span class="cstat-no" title="statement not covered" >return n===undefined?t.remove(e):(s.setItem(e,t.serialize(n)),n)}</span>,t.get=<span class="fstat-no" title="function not covered" >fu</span>nction(e){<span class="cstat-no" title="statement not covered" >return t.deserialize(s.getItem(e))}</span>,t.remove=<span class="fstat-no" title="function not covered" >fu</span>nction(e){<span class="cstat-no" title="statement not covered" >s.removeItem(e)}</span>,t.clear=<span class="fstat-no" title="function not covered" >fu</span>nction(){<span class="cstat-no" title="statement not covered" >s.clear()}</span>,t.getAll=<span class="fstat-no" title="function not covered" >fu</span>nction(){var e=<span class="cstat-no" title="statement not covered" >{};<span class="cstat-no" title="statement not covered" ></span>return t.forEach(<span class="fstat-no" title="function not covered" >fu</span>nction(t,n){<span class="cstat-no" title="statement not covered" >e[t]=n}</span>),e}</span>,t.forEach=<span class="fstat-no" title="function not covered" >fu</span>nction(e){<span class="cstat-no" title="statement not covered" >for(var n=0;n&lt;s.length;n++){var r=<span class="cstat-no" title="statement not covered" >s.key(n);<span class="cstat-no" title="statement not covered" ></span>e(r,t.get(r))}</span>}</span>;e</span>lse <span class="cstat-no" title="statement not covered" >if(n.documentElement.addBehavior){var u,a;<span class="cstat-no" title="statement not covered" >try{<span class="cstat-no" title="statement not covered" >a=new ActiveXObject("htmlfile"),a.open(),a.write("&lt;"+i+"&gt;document.w=window&lt;/"+i+'&gt;&lt;iframe src="/favicon.ico"&gt;&lt;/iframe&gt;'),a.close(),u=a.w.frames[0].document,s=u.createElement("div")}</span>catch(f){<span class="cstat-no" title="statement not covered" >s=n.createElement("div"),u=n.body}</span>f</span>unction <span class="fstat-no" title="function not covered" >l(</span>e){<span class="cstat-no" title="statement not covered" >return <span class="fstat-no" title="function not covered" >fu</span>nction(){var n=<span class="cstat-no" title="statement not covered" >Array.prototype.slice.call(arguments,0);<span class="cstat-no" title="statement not covered" ></span>n.unshift(s),u.appendChild(s),s.addBehavior("#default#userData"),s.load(r);v</span>ar i=<span class="cstat-no" title="statement not covered" >e.apply(t,n);<span class="cstat-no" title="statement not covered" ></span>return u.removeChild(s),i}</span>}</span>var c=<span class="cstat-no" title="statement not covered" >new RegExp("[!\"#$%&amp;'()*+,/\\\\:;&lt;=&gt;?@[\\]^`{|}~]","g");</span>function <span class="fstat-no" title="function not covered" >h(</span>e){<span class="cstat-no" title="statement not covered" >return e.replace(/^d/,"___$&amp;").replace(c,"___")}<span class="cstat-no" title="statement not covered" ></span>t.set=l(<span class="fstat-no" title="function not covered" >fu</span>nction(e,n,i){<span class="cstat-no" title="statement not covered" >return n=h(n),i===undefined?t.remove(n):(e.setAttribute(n,t.serialize(i)),e.save(r),i)}</span>),t.get=l(<span class="fstat-no" title="function not covered" >fu</span>nction(e,n){<span class="cstat-no" title="statement not covered" >return n=h(n),t.deserialize(e.getAttribute(n))}</span>),t.remove=l(<span class="fstat-no" title="function not covered" >fu</span>nction(e,t){<span class="cstat-no" title="statement not covered" >t=h(t),e.removeAttribute(t),e.save(r)}</span>),t.clear=l(<span class="fstat-no" title="function not covered" >fu</span>nction(e){var t=<span class="cstat-no" title="statement not covered" >e.XMLDocument.documentElement.attributes;<span class="cstat-no" title="statement not covered" ></span>e.load(r);<span class="cstat-no" title="statement not covered" >f</span>or(var n=0,i;i=t[n];n++)<span class="cstat-no" title="statement not covered" >e.removeAttribute(i.name);<span class="cstat-no" title="statement not covered" >e</span></span>.save(r)}</span>),t.getAll=<span class="fstat-no" title="function not covered" >fu</span>nction(e){var n=<span class="cstat-no" title="statement not covered" >{};<span class="cstat-no" title="statement not covered" ></span>return t.forEach(<span class="fstat-no" title="function not covered" >fu</span>nction(e,t){<span class="cstat-no" title="statement not covered" >n[e]=t}</span>),n}</span>,t.forEach=l(<span class="fstat-no" title="function not covered" >fu</span>nction(e,n){var r=<span class="cstat-no" title="statement not covered" >e.XMLDocument.documentElement.attributes;<span class="cstat-no" title="statement not covered" ></span>for(var i=0,s;s=r[i];++i)<span class="cstat-no" title="statement not covered" >n(s.name,t.deserialize(e.getAttribute(s.name)))}</span></span>)}<span class="cstat-no" title="statement not covered" ></span>t</span></span>ry{var p=<span class="cstat-no" title="statement not covered" >"__storejs__";<span class="cstat-no" title="statement not covered" ></span>t.set(p,p),t.get(p)!=p&amp;&amp;(t.disabled=!0),t.remove(p)}</span>catch(f){<span class="cstat-no" title="statement not covered" >t.disabled=!0}<span class="cstat-no" title="statement not covered" ></span>t</span>.enabled=!t.disabled,typeof module!="undefined"&amp;&amp;module.exports&amp;&amp;this.module!==module?module.exports=t:typeof define=="function"&amp;&amp;define.amd?define(t):e.store=t}</span>(Function("return this")())</span></pre></td></tr>
</table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
  Code coverage
  generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Mon Aug 20 2018 02:12:53 GMT+0800 (CST)
</div>
</div>
<script src="../../prettify.js"></script>
<script>
window.onload = function () {
        if (typeof prettyPrint === 'function') {
            prettyPrint();
        }
};
</script>
<script src="../../sorter.js"></script>
<script src="../../block-navigation.js"></script>
</body>
</html>
